﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace WebApplication1
{
    public class Vaisseau_joueur 
    {
        const int pvMaxBase = 50;
        const int peMaxBase = 30;
        public int pv {get; set;}
        public int pe {get; set;}
        public int lvl { get; set; }
        public int bonusD { get; set; }
        public int xpLvl { get; set; }
        protected Random random = new Random();

        public Vaisseau_joueur()
        {
            this.pv = 50;
            this.pe = 30;
            this.lvl = 1;
            this.bonusD = 0;
            this.xpLvl = 0;            
        }

        public Vaisseau_joueur(int pv, int pe, int lvl, int xpLvl, int bonusD)
        {
            this.pv = pv;
            this.pe = pe;
            this.lvl = lvl;
            this.xpLvl = xpLvl;
            this.bonusD = bonusD;
        }

        public void fight(int lvlEnnemi){            
            int lanceJ = random.Next(1, 7);
            int lanceE = random.Next(1, 7);

            lanceJ += bonusD;
            lanceE += (lvlEnnemi - this.lvl);

            bonusD = 0;
            System.Diagnostics.Debug.Write("Un combat avec vaisseau ennemi a lieu : Votre force de frappe est de "+lanceJ+" et votre adversaire a une force de frappe de "+lanceE+". ");
            if (lanceE <= lanceJ)
            {
                System.Diagnostics.Debug.WriteLine("Vous gagnez le combat.");
                gainFight(lvlEnnemi);
            }
            else
            {
                System.Diagnostics.Debug.WriteLine("Vous perdez le combat et votre adversaire vous inflige " + (lanceE - lanceJ) + " points de dégâts.");
                this.pv -= (lanceE - lanceJ);
            }
        }

        public void gainFight(int lvlEnnemi)
        {
            int xpGagne = (15 + (lvlEnnemi - lvl) * 3) - lvl;
            xpLvl += xpGagne;
            if (xpLvl >= 100)
            {
                lvlUp(xpLvl % 100);
            }
        }
        public int getPvMax(){
            return pvMaxBase + 5 * (lvl-1);
        }

        public int getPeMax(){
            return peMaxBase + 3 * (lvl-1);
        }

        public void lvlUp(int xpBonus)
        {
            this.lvl++;
            this.xpLvl = xpBonus;
            this.pv = getPvMax();
            this.pe = getPeMax();
            System.Diagnostics.Debug.WriteLine("Votre vaisseau a pris assez d'expérience pour gravir un échelon et est désormais de niveau " + this.lvl);
            System.Diagnostics.Debug.WriteLine("Votre vaisseau possède désormais "+this.pv+" points de vie. Ainsi que "+this.pe+" points d'essence.");
        }

    }
}
